﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using Domain;
using System.Data;

namespace Repository
{
    public class CompraDB : IQuery<Compra>
    {
        private SqlConnection conn;

        public CompraDB(SqlConnection conn) 
        {
            this.conn = conn;

        }

        public bool save(Compra e)
        {
            try 
            {
                SqlCommand command = new SqlCommand("insert into compra(id_cliente,id_produto,data,quantidade) values (" + e.Cliente.Id_cliente + "," + e.Produto.Id_produto + ",'" + DateTime.Now + "',"+e.Quantidade+")",this.conn);
                command.ExecuteNonQuery();

                return true;
            }catch(SqlException sqlex)
            {
                return false;
            }
        }

        public bool RealizarCompras(List<Compra> compras)
        {
            try
            {
                foreach (Compra e in compras)
                {
                    SqlCommand comando = new SqlCommand("INSERT into compra (id_cliente, id_produto,data,quantidade) values (@id_cliente, @id_produto, @data, @quantidade)", this.conn);
                    comando.Parameters.AddWithValue("@id_cliente", e.Cliente.Id_cliente);
                    comando.Parameters.AddWithValue("@id_produto", e.Produto.Id_produto);
                    comando.Parameters.AddWithValue("@data", DateTime.Now);
                    comando.Parameters.AddWithValue("@quantidade", e.Quantidade);

                    comando.ExecuteNonQuery();

                }
                
                return true;
            }
            catch (SqlException sqlex)
            {
                return false;
            }
        }

        public DataTable AuxDataGridView(int id_cliente) 
        {
            try
            {
                DataTable dt = new DataTable();
                SqlCommand command = new SqlCommand("select id_produto,data,quantidade from compra where id_cliente =" + id_cliente + " ",this.conn);


                SqlDataAdapter da = new SqlDataAdapter(command);
                da.Fill(dt);
                return dt;

            }
            catch (SqlException sqlex)
            {
                return null;
            }

        }

        public bool update(Compra e)
        {
            return false;
        }

        public List<Compra> getAllList()
        {
            return null;
        }

        public List<Compra> getListById(int id)
        {
            throw new NotImplementedException();
        }

        public bool delete(Compra e)
        {
            try
            {
                SqlCommand command = new SqlCommand("delete from compra where id_prduto = "+e.Produto.Id_produto+" and "+e.Cliente.Id_cliente+" and dataCompra = "+e.DataCompra+"  ", this.conn);
                return true;
            }
            catch (SqlException sqlex) 
            {
                return false;
            }
        }


        public void openConnection()
        {
            this.conn.Open();
        }

        public void closeConnection()
        {
            this.conn.Close();
        }

        public void putConnection(SqlConnection connection)
        {
            this.conn = connection;
        }
    }
}
